package controllers;

import play.*;
//import play.data.validation.Validation;
//import play.data.validation.Error;
import play.data.validation.Required;
import play.mvc.*;
import controllers.ControllerTabref;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Date;

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

import models.*;

public class Application extends Controller {

	protected static Connection con;
	protected static Statement comando;

	@Before(unless = { "index", "showCardapio", "tela_login", "login",
			"Localizacao" })
	static void checkAutenticacao() throws SQLException {
		if (!session.contains("logado")) {
			tela_login();

		}
	}

	public static void login(Usuario usuario) throws SQLException {

		conectar();
		ResultSet rs = null;
		Usuario usuarioaux = new Usuario();
		try {
			rs = comando
					.executeQuery("SELECT * FROM Potiguar.Usuario WHERE login= '"
							+ usuario.getLogin()
							+ "' AND senha = '"
							+ usuario.getSenha() + "'");

			while (rs.next()) {
				usuarioaux.setEmail(rs.getString("email"));
				usuarioaux.setSenha(rs.getString("senha"));
				usuarioaux.setLogin(rs.getString("login"));
				usuarioaux.setNome(rs.getString("nome"));
			}
			if (usuarioaux.getLogin() != null && usuarioaux.getSenha() != null) {
				session.put("logado", usuarioaux.getLogin());
				showAreaRestrita();
			} else {
				index();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public static void logout() {
		session.remove("usuario.login");
		index();

	}

	protected static void conectar() throws SQLException {
		try {
			Class.forName("org.postgresql.Driver");
		} catch (ClassNotFoundException e) {
		}

		con = DriverManager.getConnection(
				"jdbc:postgresql://localhost:5432/potiguar", "postgres",
				"vivipin2794");

		comando = con.createStatement();

	}

	public static void index() {
		render();
	}

	public static void showAreaRestrita() {
		render();
	}

	public static void showCardapio() throws SQLException {
		conectar();
		ResultSet rs1, rs2;
		List<Prato> list_prato = new ArrayList<Prato>();

		try {
			rs1 = comando
					.executeQuery("SELECT DISTINCT nome_prato,id_prato,preco FROM Potiguar.Prato");
			while (rs1.next()) {
				Prato prato = new Prato();
				prato.setId_prato(rs1.getInt("id_prato"));
				prato.setNome_prato(rs1.getString("nome_prato"));
				prato.setPreco(rs1.getFloat("preco"));
				list_prato.add(prato);
			}
			for (int i = 0; i < list_prato.size(); i++) {
				rs2 = comando
						.executeQuery("SELECT DISTINCT nome_produto FROM Potiguar.Tabref,Potiguar.Produto  WHERE Tabref.id_produto=Produto.id_produto AND  Tabref.id_prato="
								+ list_prato.get(i).getId_prato() + "");
				String string = new String();
				string = "vazio";
				while (rs2.next()) {
					if (string == "vazio") {
						string = rs2.getString("nome_produto");
					} else {
						string = string + "," + rs2.getString("nome_produto");
					}
				}
				list_prato.get(i).setImg_path(string);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		render(list_prato);

	}

	public static void tela_login() {
		render();
	}

	public static void telaCadastrar() {
		render();
	}

	public static void telaExcluir() {
		render();
	}

	public static void telaEditar() {
		render();
	}

	public static void Localizacao() {
		render();
	}

}
